package cn.zebra.dev.product.module.sku.service;

import cn.zebra.dev.ibatis.plus.service.IService;
import cn.zebra.dev.product.module.sku.entity.ProductSkuAttributeEntity;

import java.util.Collection;
import java.util.List;
import java.util.concurrent.Future;

/**
 * @author runnable@sina.cn
 */
public interface ProductSkuAttributeService extends IService<ProductSkuAttributeEntity> {
    /**
     * 批量线程保存
     *
     * @param entityList 商品分类集合
     * @return 成功返回true 保存失败返回false
     */
    @Override
    boolean saveBatch(Collection<ProductSkuAttributeEntity> entityList);

    /**
     * 异步保存
     *
     * @param entity 商品分类
     * @return 异步回调对象
     */
    Future<Boolean> asyncSave(ProductSkuAttributeEntity entity);

    /**
     * 根据商品id查找所有商品sku属性集合
     *
     * @param productId 商品id
     * @return 商品sku属性集合
     */
    List<ProductSkuAttributeEntity> findListByProductId(Long productId);

    /**
     * 根据商品id和商品SKU Id 删除所有对应绑定属性
     *
     * @param productId 商品id
     * @param skuId     商品SKU Id
     * @return 成功返回 TRUE 失败返回FALSE
     */
    Boolean delete(Long productId, Long skuId);

    /**
     * 根据商品sku Id查找所有商品sku属性集合
     *
     * @param productSkuId 商品sku Id
     * @return 商品sku属性集合
     */
    List<ProductSkuAttributeEntity> findListByProductSkuId(Long productSkuId);

    /**
     * 根据SkuId集合删除数据
     *
     * @param skuIds SkuId集合
     * @return 删除成功返回True 删除失败返回False
     */
    Boolean deleteByProductSkuIds(Collection<Long> skuIds);
}
